package com.qf.ajax;

import com.fasterxml.jackson.databind.ObjectMapper;
import com.qf.pojo.Teacher;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashSet;

/**
 * @date 2022/3/31
 * @desc
 *
 * 实际开发当中  肯定不会让程序员 手动的 把   java 对象 转为 JSON字符串 发给前端
 * 有很多 第三方的 工具类   帮助咱们做转换
 * 可以很轻松的  把 java 对象转为 json 串 发给前端
 *  比较好用的  有   fastjson   和  jackson
 *  当前 这个 servlet 使用   jackson
 *  使用步骤
 *  1.添加依赖
 *
 * <!--    jackson-->
 *     <dependency>
 *       <groupId>com.fasterxml.jackson.core</groupId>
 *       <artifactId>jackson-databind</artifactId>
 *       <version>2.10.0</version>
 *     </dependency>
 *  2.
 *
 *    //   利用jackson  把 java 对象 转为 json 串
 *         ObjectMapper mapper=new ObjectMapper();
 *
 *         String s = mapper.writeValueAsString(teacher);
 */
@WebServlet("/getAjaxInfo3")
public class GetAjaxInfo3Servlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req,resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        // 注意  ajax 的 响应  就不要再转发 或者重定向了   直接向浏览器输出  数据

        String name = req.getParameter("name");

        System.out.println(name);

        PrintWriter writer = resp.getWriter();

        // java 对象 转为  json  利用  fastjson
        Teacher teacher = new Teacher();
        teacher.setName("苍老师");
        teacher.setHeight(1.65);
        teacher.setPhone("456");
        HashSet<String> set = new HashSet<>();
        set.add("看书");
        set.add("游泳");
        teacher.setHobby(set);

        //   利用jackson  把 java 对象 转为 json 串
        ObjectMapper mapper=new ObjectMapper();

        String s = mapper.writeValueAsString(teacher);

        writer.println(s);

    }


}
